package modelo.mapa;

public abstract class Borde {
	
	static final int norte = 0;
	static final int oeste = 1;
	static final int sur = 2;
	static final int este = 3;
	protected boolean deboAumentarCoordZigZag;
    protected int contadorParaCambiarDireccionEnDiagonal;
    protected int direccionParaAumentarODisminuirCoordDiagonalSegunUbicacionOrigen;
        
    public Borde()
    {
        this.deboAumentarCoordZigZag = true;
        this.contadorParaCambiarDireccionEnDiagonal = 0;
    }
    
    public abstract Ubicacion actualizarCoordenadasMovimientoRecto(Ubicacion unaUbicacion);
    
    public abstract Ubicacion actualizarCoordenadasMovimientoDiagonal(Ubicacion unaUbicacion);
    
    public abstract Ubicacion actualizarCoordenadasMovimientoZigZag(Ubicacion unaUbicacion);
    
    protected boolean verificarSiSeDebeCambiarDireccionEnDiagonal()
    {
    	int distanciaParaCambiarDireccion = (int)(Mapa.getInstance().obtenerCantidadColumnas()/5);
    	if (distanciaParaCambiarDireccion == this.contadorParaCambiarDireccionEnDiagonal)
    	{
    		this.contadorParaCambiarDireccionEnDiagonal = 0;
    		return true;
    	}
    	return false;
    }
    
    protected abstract void asignaParaQueDireccionSeDebeAumentarODisminuirDiagonal(Ubicacion ubicacionOrigen);

}